package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.BaseModifyDetail;
import com.softer.wxzj.entity.BaseOrganization;
import com.softer.wxzj.entity.BaseRegionInfo;
import com.softer.wxzj.entity.FunBalInfo;
import com.softer.wxzj.service.base.BaseService;

import java.util.List;

/**
 * @description:小区基本信息接口
 * @ClassName: BaseRegionInfoService
 * @author: youmingke
 * @date: 2019-05-20 16:33
 */
public interface BaseRegionInfoService extends BaseService<BaseRegionInfo> {

    PageInfo<FunBalInfo> selectOwnerFunBal(Page page, String fuzzy);

    /**
     * 查询对应物业，填充下来框
     *
     * @param id
     * @param orgTypeCode
     * @return
     */
    List<BaseOrganization> getOrgList(String id, String orgTypeCode);

    /**
     * 小区建档，根据id查询小区基本信息
     *
     * @param id 小区id
     * @return
     */
    BaseRegionInfo getInfoById(String id);

    /**
     * 获取待审批列表
     *
     * @param page
     * @param baseRegionInfo
     * @return
     */
    PageInfo<BaseRegionInfo> getAuditList(Page page, BaseRegionInfo baseRegionInfo);

    /**
     * 添加审批流程
     *
     * @param
     */
    CommonResult addAudit(String id, String opinion, String mark);

    /**
     * 变更审批流程
     *
     * @param
     */
    CommonResult modifyAudit(String id, String opinion, String mark);

    /**
     * 提交审批
     *
     * @param
     */
    CommonResult submitAudit(String id);

    /**
     * 变更  走审核
     *
     * @param
     */
    CommonResult modify(BaseRegionInfo baseRegionInfo) throws Exception;

    /**
     * 查询变更信息列表
     *
     * @return
     */
    PageInfo<BaseRegionInfo> getModifyList(Page page, BaseRegionInfo baseRegionInfo);

    /**
     * 查询变更待审批信息列表
     *
     * @return
     */
    PageInfo<BaseRegionInfo> getModifyAuditList(Page page, BaseRegionInfo baseRegionInfo);

    /**
     * 查询变更详情列表
     *
     * @return
     */
    PageInfo<BaseModifyDetail> getModifyDetailList(Page page, String id);

    /**
     * 新增备案 通过审批
     *
     * @param
     */
    CommonResult auditPass(String id);

    /**
     * 小区名称
     *
     * @return
     */
    List<BaseRegionInfo> selectRegion();

    /**
     * 模糊查询建档小区信息列表
     *
     * @param baseRegionInfo 模糊查询参数
     * @return 小区信息
     */
    PageInfo<BaseRegionInfo> fuzzySearch(Page page, BaseRegionInfo baseRegionInfo);

    /**
     * 模糊查询房屋合并/拆分变更列表;小区信息维护列表； 业主信息维护列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 小区信息
     */
    PageInfo<BaseRegionInfo> fuzzyRegionSearch(Page page, String param);

    /**
     * 变更业务状态
     *
     * @param id
     * @param state
     * @return
     */
    CommonResult updateStateById(String id, String state);


    /**
     * 小区名称 不能重复  的  验证
     *
     * @param baseRegionInfoName
     * @return
     * @Author Ludexing
     */
    CommonResult checkBaseRegionInfoName(String baseRegionInfoName, String id);

    /**
     * 查询小区列表，用在批量退款
     *
     * @param baseRegionInfo
     * @return
     */
    PageInfo<BaseRegionInfo> getListToBatchRef(Page page, BaseRegionInfo baseRegionInfo);

    /**
     * 模糊查询小区待审批列表
     *
     * @param page           分页实体
     * @param baseRegionInfo 查询实体
     * @return 待审核小区列表
     */
    PageInfo<BaseRegionInfo> fuzzyAuditList(Page page, BaseRegionInfo baseRegionInfo);

    PageInfo<BaseRegionInfo> selectByCommit(Page page,BaseRegionInfo baseRegionInfo);
    /**
     * 根据id获取小区基本信息详情
     *
     * @param id 小区id
     * @param arcType 图档大类
     * @return 小区信息
     */
    BaseRegionInfo getInfoById(String id, String arcType);

    /**
     * 通过区域查询小区
     * @param zoneCode
     * @return
     */
    List<BaseRegionInfo> selectCommitteByZoneCode(String zoneCode,String type);
}
